package com.clstu.generic;


public class CustomInterfaceGeneric {
    public static void main(String[] args) {

    }
}
interface IUsb<U,R>{
    //R r;
    // 接口中的变量都是默认用 public static final 修饰的
    // 因为有static 所以接口中不能用泛型定义变量
    R get(U u);//默认用public abstract修饰
    void hi(R r);
    void run(R r1,R r2);
    default R method(U u){//接口的默认方法也可以用泛型
        return null;
    }
}
interface MyInterface extends IUsb<String ,String>{

}
class D implements MyInterface{//上面的接口给出了泛型类型，所以实现方法的时候就是这些类型
                        //如果上面接口没有给出泛型的具体类型，就要自己给出
    @Override
    public String get(String s) {
        return null;
    }

    @Override
    public void hi(String s) {

    }

    @Override
    public void run(String r1, String r2) {

    }
}
class X implements IUsb<Double,String>{
    @Override
    public String get(Double aDouble) {
        return null;
    }

    @Override
    public void hi(String s) {

    }

    @Override
    public void run(String r1, String r2) {

    }
}

class K implements IUsb<Object,Object>{//等价于class K implements IUsb{...},写上尖括号专业一些，
                                  //不写虽然不会报错，但容易误会没有用泛型
    @Override
    public Object get(Object o) {
        return null;
    }

    @Override
    public void hi(Object o) {

    }

    @Override
    public void run(Object r1, Object r2) {

    }
}